"""Abstract base classes"""

class ScannerCollection(object):

    def __init__(self):
        raise NotImplementedError

    def get(self, id):
        """Return a scanner with the given ID"""
        raise NotImplementedError

    def list(self):
        """Return a list containing information about all the 
        scanners available
        """
        return self

class Scanner(object):
    """Abstract Scanner class"""

    def __init__(self):
        raise NotImplementedError

    def scan(self, dpi=200):
        """Scan a new page using the given DPI"""
        raise NotImplementedError

    def info(self):
        """Get the device information and return in a dict"""
        raise NotImplementedError

    def status(self):
        """Get device status"""
        # TODO: Define standard status
        raise NotImplementedError

